package com.escom.activity;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import com.escom.R;
import com.escom.dao.HistoriaFamiliarDAO;
import com.escom.entidad.EnfermedadVO;
import com.escom.entidad.HistoriaFamiliarVO;
import com.escom.entidad.HistoriaItem;
import com.escom.entidad.ParentescoVO;
import com.escom.utils.Constantes;
import com.escom.utils.CustomHistoriaAdapter;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Carlos on 13/04/2014.
 */
public class HistoriaFragment extends Fragment {

    private SharedPreferences sharedpreferences;
    private ListView listViewHistoria;

    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        View viewActivity = inflater.inflate(R.layout.fragment_historia, container, false);
        sharedpreferences = getActivity().getSharedPreferences(Constantes.MY_PREFERENCES, Context.MODE_PRIVATE);
        String idPaciente = sharedpreferences.getString(Constantes.ID_PACIENTE_KEY, null);
        listViewHistoria = (ListView) viewActivity.findViewById(R.id.listViewHistoria);

        HistoriaFamiliarDAO historiaFamiliarDAO = new HistoriaFamiliarDAO(getActivity().getApplicationContext());
        List<HistoriaFamiliarVO> historiaFamiliar = historiaFamiliarDAO.retrieveHistoraByIdPAciente(idPaciente);
        List<HistoriaItem> historiaItems = createHistoriaItem(historiaFamiliar);
        //Log.d(Constantes.LOG_ID, this.getClass().getName() + " Items Creados");
        if(historiaItems == null || historiaItems.isEmpty()){
            historiaItems = new ArrayList<HistoriaItem>();
            HistoriaItem historiaSet = new HistoriaItem();
            historiaSet.setTitle(true);
            historiaSet.setLabelParentesco("No exite información");
            historiaItems.add(historiaSet);
        }
        CustomHistoriaAdapter customHistoriaAdapter
                = new CustomHistoriaAdapter(viewActivity.getContext(), R.layout.custom_historia_item, historiaItems);
        listViewHistoria.setAdapter(customHistoriaAdapter);
        //Log.d(Constantes.LOG_ID, this.getClass().getName() + " After setAdapter");

        registerForContextMenu(listViewHistoria);


        return viewActivity;
    }

    public List<HistoriaItem> createHistoriaItem(List<HistoriaFamiliarVO> historiaFamiliares) {
        List<HistoriaItem> historiaItems = new ArrayList<HistoriaItem>();
        HistoriaItem historiaItem;
        for (int i = 0; i < historiaFamiliares.size(); i++) {
            HistoriaFamiliarVO historiaFamiliar = historiaFamiliares.get(i);
            EnfermedadVO enfermedad = historiaFamiliar.getEnfermedad();
            ParentescoVO parentesco = historiaFamiliar.getParentesco();
            String tipoParentesco = parentesco.getTipoParentesco();
            String enfermedadString = enfermedad.getEnfermedad();
            if (historiaItems.isEmpty()) {
                historiaItem = new HistoriaItem();
                historiaItem.setTitle(true);
                historiaItem.setLabelParentesco(tipoParentesco);
                historiaItems.add(historiaItem);
                historiaItem = new HistoriaItem();
                historiaItem.setTitle(false);
                historiaItem.setLabelEnfermedad(enfermedadString);
                historiaItems.add(historiaItem);
            } else {
                boolean flagTitle = false;
                for (int j = 0; j < historiaItems.size(); i++) {
                    HistoriaItem historiaItemGet = historiaItems.get(j);
                    if(historiaItemGet.getLabelParentesco().equals(tipoParentesco)){
                        flagTitle = true;
                        break;
                    }
                }
                if(flagTitle){
                    historiaItem = new HistoriaItem();
                    historiaItem.setTitle(false);
                    historiaItem.setLabelEnfermedad(enfermedadString);
                    historiaItems.add(historiaItem);
                }else{
                    historiaItem = new HistoriaItem();
                    historiaItem.setTitle(true);
                    historiaItem.setLabelParentesco(tipoParentesco);
                    historiaItems.add(historiaItem);
                    historiaItem = new HistoriaItem();
                    historiaItem.setTitle(false);
                    historiaItem.setLabelEnfermedad(enfermedadString);
                    historiaItems.add(historiaItem);
                }
            }
        }

        return historiaItems;
    }
}
